
/**
 * 代码格式说明
 * 函数名首字母小写,方法名首字母大写
 */

// 页面调用(管理)程序
// 实现:
//    用URL #号后的字符来标识不同的页面
//



/**********************************************************************************
 * class ProductsInfo
 *******************************/
(function(){

/**
 * 构造函数
 */
// 数据类型说明:                             
var ProductsInfo = window.ProductsInfo = function( procFile,selfOps,parentOps,childOps )
{
    // 驱动属性
    this.procFile = procFile;
    this.selfOps = selfOps;
    this.parentOps= parentOps;
    this.childOps = childOps;

    this.UIL = new ProductsInfoUIL();
}


ProductsInfo.fn = ProductsInfo.prototype =
{
    /**
     * 页面, add
     */
    add : function( cmd,dispObj )
    {
        var page = this.UIL.add();
        dispObj.append( page );    // 添加到可视区域

        // 分类选择框
        if( 0 != cmd["catId"] ){
            var strCmd = this.procFile.concat( "?view=",cmd["view"],"&op=",this.parentOps["details"],"&id=",cmd["catId"] );
            Categories.SelectOption( strCmd,page.find('.selectOptions') );
        }else{
            var strCmd = this.procFile.concat( "?view="+cmd["view"],"&op=",this.parentOps["list"],"&id=0" );
            Categories.SelectOptions( strCmd,page.find('.selectOptions'), 0 );
        }

        dispObj.append( page );                 // 添加到可视区域
        frm = page.find('.frm');
        frm[0].action = this.procFile.concat("?",cmd.toString() );
        this.submit_add( frm );   // 监听提交
    },
    // 提交 list 的数据
    submit_add : function( frm )
    {
        frm.ajaxSubmit('json');
    },

    /**
     * 页面, subsys/module/remove
     */
    remove : function(cmd)
    {
        // 读取数据
        var _ = this;

        var page = _.UIL.remove();
        var dispObj = App.ui.popupWrap.clone(true);
        App.ui.content.append( dispObj.append(page) );
        page.find(".cancel").click( function(){dispObj.remove();} );   //绑定取消按钮

        var delObj = App.ui.content.find( "."+cmd.subsys+cmd.args(5) );

        var frm = page.find(".frm");
        frm[0].action = _.procFile.concat("?cmd=",cmd.service,"&ids=",cmd.args(5) );
        _.submit_remove( frm,dispObj,delObj );      //绑定提交事件
    },
    submit_remove : function( frm,dispObj,delObj )
    {
        //frm.ajaxSubmit('json');
        var _ = this;
        frm.submit( function(){
            $.getJSON( this.action, function( json ){

                if( json.error ){
                    dat = json.error;
                }else{
                    dat = json.success;
                    delObj.remove();
                }

                App.ui.popupAlert(dat,dispObj);

            });
            return false;
        });
    },

    /**
     * 修改内容页面, subsys/module/modify
     */
    modify : function( cmd,dispObj )
    {
        // 读取数据
        var _ = this;
        $.getJSON( this.procFile.concat( "?view=",cmd["view"],"&op=",_.selfOps["details"],"&id="+ cmd["id"] ), function( json ){

            var page = _.UIL.modify(json);

            dispObj.append( page );      // 添加到可视区域

            var frm = page.find(".frm");
            frm[0].action = _.procFile.concat( "?",cmd.toString() );
            _.submit_modify( frm );      // 监视提交
        });
    },
    submit_modify : function( frm )
    {
        frm.ajaxSubmit('json');
    },

    /**
     * 移动产品页面,sysId/clsId/move
     */
    move : function( cmd,dispObj )
    {
        // 当前位置
        //page.find(".btnReturn").attr("href", "#"+this.sysClsCmd+"/list" + cmd.back(1) );
        //page.find(".btnDetail").attr("href","#"+this.sysClsCmd+"/detail/" + cmd.val().join('/') );

        // 读取数据
        var _ = this;
        $.getJSON( _.procFile+"?cmd="+cmd.module+"/detail&id="+ cmd.args(5), function( json ){

            var page = _.UIL.move(json);

            // 读取分类
            var parentCmd = new CmdBuilder(cmd.subsys,_.parentOps[0],"list");
            Categories.SelectOptions( _.procFile,parentCmd,page.find('.selectOptions'), 0, cmd.args(3) );

            // 添加到可视区域
            dispObj.append( page );

            // 监听提交
            var frm = page.find(".frm");
            frm[0].action = "{0}?cmd={1}".format( _.procFile,cmd.service );
            _.submit_move( frm );
        });

    },
    submit_move : function( frm )
    {
        frm.ajaxSubmit('json');
    },


    /**
     * 内容详细页面,subsys/module/service
     */
    get_details : function( cmd,dispObj )
    {

        // 当前位置
        // var breadcrumb = this.header.find('.breadcrumb');
        // Categories.breadcrumb( this.procFile, breadcrumb.empty(), this.sysId, this.clsId, this.catClsId, cmd.val(-3), cmd.back(3) );

        // 读取数据
        var _ = this;
        $.getJSON( _.procFile.concat( "?",cmd.toString() ), function( json ){
            var page = _.UIL.get_details(json);
            dispObj.append(page);             // 添加到可视区域
        });
    },

    /**
     * 页面, subsys/module/service
     */
    get_list : function( cmd,dispObj )
    {
        // 读取数据
        var _ = this;
        $.getJSON( _.procFile.concat( "?",cmd.toString() ), function( json ){
            var page = _.UIL.get_list(json,cmd,_.selfOps,_.childOps);
            dispObj.append( page );   // 添加到可视区域
        });
    }

}//class ProductsInfo.fn

/**
 * 常用UI
 */
ProductsInfo.ui = {
    toolbarInList : function(view,ops,catId)
    {
        return '<div> \
                  <a class="btnAdd" href="#view={0}&op={1}&catId={2}" title="添加产品">添加产品</a> —\
                  <a href="#" class="btnCheckAll" title="全选/全不选">全选</a> -\
                  <a href="#" title="生成静态页面"></a> \
                  <a href="#" class="btnMove" title="移动">移动</a> -\
                  <a href="#" class="btnRemove" title="删除">删除</a> \
                </div> \
                <div class="divider"></div> '.format(view,ops["add"],catId);
    },

    toolbarInDetail : function(view,ops,id)
    {
        return '<div>\
                    <a class="btnModify" href="#view={0}&op={2}&id={1}" title="修改">修改</a>\
                    <a class="btnRemove" href="#view={0}&op={3}&id={1}" title="删除"></a>\
                </div>\
                <div class="divider"></div>'.format(view,id,ops["modify"]);
    },

    toolbarInModify : function(view,ops,id)
    {
        return '<a class="btnDetail" href="#view={0}&op={1}&id={2}" title="阅读详细">阅读</a>\
                <div class="divider"></div>'.format(view,ops["details"],id);
    }
};

})();











